#include "mainwindow.h"

#ifdef Q_OS_WIN
#include <windows.h>
#include <shellapi.h>
#endif

#include <QSettings>
#include <QCoreApplication>
#include <QSharedMemory>
#include <QDir>
#include <QMessageBox>
#include <QApplication>
#include "loghandler.h"

// 重定向 Qt 日志到自定义处理器
void customMessageHandler(QtMsgType type, const QMessageLogContext& context, const QString& msg) {

            FileLogger::instance().init();
    FileLogger::instance().log(type, context, msg);
}

bool isOnline()
{
    // 使用唯一标识符（建议包含时间戳防冲突）
    QSharedMemory shared("MyApp_UniqueKey_" + QDateTime::currentSecsSinceEpoch());

    if (!shared.create(1)) {
        QMessageBox::warning(nullptr, "警告", "程序已在运行");
        return true;
    }

    // 设置自动释放（Linux 下需手动处理僵尸内存）
    shared.detach();
    return false;
}

void registerToComputer()
{
    QString path = QCoreApplication::applicationFilePath();
    // 转换为系统原生分隔符（Windows下自动转为反斜杠）
    QString nativePath = QDir::toNativeSeparators(path);
    // 设置自启动
    QSettings settings("HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Run", QSettings::NativeFormat);
    settings.setValue("EventAlarmClock", QString("\"%1\"").arg(nativePath));
}

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    //if(isOnline()) return 0;

    a.setWindowIcon(QIcon(":/image/alarm.png"));

    registerToComputer();
    qInstallMessageHandler(customMessageHandler);
    MainWindow w;
    w.show();
    return a.exec();
}

